干货 | Casper机制的历史起源-第三篇
几经波折,EthFans的微信订阅号“以太坊爱好者”终于恢复更新了。有心的爱好者可能已经发现,“以太坊爱好者”已经断更了14天了,对此,EthFans团队在这里向大家表示深深的歉意。5月24日由于人为恶意举报,该公众号被封号,经过我们不懈的努力终于在6月6日晚上恢复了“以太坊爱好者”的运营权,我们将继续尽最大的努力给大家提供优质的内容。以太坊爱好者自2014年成立以来,我们就一直以建立最好的以太坊中文技术社区为目标,并且在近三年时间里不断尝试、迭代和完善,积累了一批有着同样爱好的支持者。在此感谢大家长久以来的陪伴,你们的支持是我们前进的最大动力,EthFans将会在未来的道路上继续摸索前进,与大家一同成长。
--以太坊爱好者EthFans团队
2017.6.7
本章描述了我们对权益证明研究的一个阶段,从我们发现远程攻击问题的解决方案开始,到我们首次意识到传统区块链共识研究的存在和重要性为止。
这个“wild west(狂野西部)”时期的特点是充满着广泛的实验,探索和无知。因此,本章的大部分内容是相对紊乱的协议设想的集合。 由于,很遗憾地,我被踢出了一个金融加密邮件列表,以及我对Jae Kwon的Tendermint的不断研究和了解(我之后立马变成了它的粉丝)这两件事意味着这个wild west(狂野西部)时代的终结。
>>>> “归零点”的权益证明共识机制
2014年9月20日--2014年12月
我们最初相当自信,认为我们很快将解决权益证明问题,因为我们已经探索到解决无利害关系和远程攻击的方案。 然而,我们很快发现(几乎)所有的关键技术问题仍然没有得到解决。
我们当初并不知道区块是怎么样被产生出来的。 我们也不能明确地知道激励机制是什么,我们知道的仅仅是在你一旦签署“双重签名”,就会失去你的保证金,不管这句话到底意味什么。我们没有清楚地表达我们的协议设想和我们经常隐含的时间假设(例如同步时钟和可预测的网络延迟)之间的关系。 我们依靠的是这样的一个观点:客户端最终将选择相同的链,因为它们有相同的分叉选择规则(来提供“共识”),而且没有完全意识到这种机制严重依赖于同步性假设。
>>>> 存款保证金周转和共识的最终确定
从我们有关解决远程攻击问题的方法中,我们发现我们需要一种方式让区块链的各个客户端对安全存款保证金的一系列更改达成“最终的”一致,也就是说这种协议一旦签署,将是不可逆转的。
这些变化的分叉对于一部分被绑定的利益相关者意味着客户端可能永久地失去共识:在时间T时下线并计划在T+1时上线的客户端需要有一个保证,使得它们所看到的在时间T投入的为时间T+1准备的存款不会因为在区块链中分叉而“未放置”。 有关说明,请参阅此图。
持有不正确的存款保证金清单信息的客户端可能容易被攻击,因为非共识机制下的安全存款保证金的价格为0。
至此,我们就知道,我们必须为权益证明取得“最终确定的共识”。
我有一个想法,使用安全保证金本身来给区块链设置检查点,用权益证明检查点替换开发人员设置的检查点。 客户端可以使用这些检查点的哈希值来验证存款列表是否发生过更改。 这些检查点将在每X个块后发生,并且高度在N * X处的块的“检查点”将在高度(N + 1)* X处开始检查(通过它们“最长链”的共享尾端,给予它们时间去同意),在这个过程中将需要绝对多数的绑定权益,因此在同一高度存在的两个有效检查点将肯定会触发惩罚条件。 (Vitalik通常更喜欢更连续,更低支出的机制,并独立地提出“弱主观性”评分规则,以更渐进的方式提供最终结果。)
>>>> “区块制造者”和“验证签名”的抽样
最初我们清楚地认识到,我们需要一个系统来对有存款保证金的权益持有者进行抽样以组建区块(对他们的安全存款保证金按比例抽样),以便产生一个不断成长的区块链。 而且,显而易见的是,我们可以通过额外采样一组绑定的权益持有者从而在区块上创建“验证签名”,让区块链更为安全。 因为有存款保证金的权益持有者不需要进行工作量证明,而且他们能够在看到一个新的块后立即作出有意义的经济承诺。
我现在还没有花太多精力来推导这个抽样过程的熵产,因为抽样是为了防御持有预先决定份额的绑定权益的攻击者,而不是防御那些进行贿赂攻击的对手(能够在采样之后,收买节点后对其进行贿赂攻击的对手)。 因此,我们经济的安全必须来自与因违反经济承诺而产生的Slashing条件,而不是仅仅来自于抽样本身。
>>>> Slashing条件/惩罚条件
于是我们开始兼顾惩罚条件(slashing conditions)。 当一个保证金节点在相同高度处创建或签署两个区块时,那这样他们的存款保证金就会被削减,并且这种行为会被认为是“明显不良的行为”。
如果是两个不同高度上不同的分叉中的两个区块呢? 这就很棘手了。 我们确信我们需要抑制分叉,而分叉可能是由绑定的权益持有者参与任何(其他)的分叉造成的。 但是我们仍然需要允许保证金节点在其特定视角中的最高分分叉上进行灵活的验证签名而不被惩罚。 一名权益持有者在分叉1的区块上签署后,又在分叉2的某区块上签署,如果在创建签名之时分叉2的评分高于分叉1,那么权益持有者的做法是没有问题的。这完全类似于以下情况,对一个PoW(工作量证明)矿工来说,当一个区块上的攻击者分叉变得长于它的受害者分叉后,他在攻击者区块中挖矿是没有问题。 但是当时,我们没有可行的工具让在不同高度的两个分叉签署的权益持有者受到惩罚,又不因其签署了最高评分的链而惩罚绑定权益持有者。
我们探讨了惩罚规则(保留绑定存款保证金的权益持有者的承诺“我永远不会签署不是“给定”区块链扩展出来的区块)。如果所有保证金节点可以对同一分叉作出该承诺,那么我认为这个规则可以非常有效地防止区块链分叉。然而如果他们不能保证,那么它们将不再能够参与到其中或失去他们的存款保证金。 这似乎看起来非常严重,所以我知道,我们必须确保绑定的权益持有者能够对同一个分叉作出该承诺,让惩罚规则有效实施。
即使当时我不知道有关惩罚条件的相关性或存在性,但它也算是我传统的共识机制进行的第一次研究。在之后我们通过Casper的“投注循环”研究到“共识状态终结”时, Vitalik总是想保持惩罚规则简单易懂,(如果我没搞错的话)他直到几个月后才乐衷于研究跨高度惩罚规则,也就是我们开始运用Casper的”投注循环“来研究”确定的共识状态“的时候。在任何情况下,我都不能说服自己,绑定的权益持有者能够在同一个分叉上做出这些承诺(除非他们在一个非常老的区块上做出承诺,例如在本章前面提到的检查点示例)。所以说啊,达到共识是出人意料的艰难。
>>>> 拜占庭(Byzantine)证明的审查制度
我和Vitalik开始关注拜占庭式行为的审查制度,因为这种审查制度可能破坏基于安全存款保证金方法的经济安全性,并且拜占庭证明对于触发惩罚规则是必要的。
请注意,虽然我们不是(或者至少我不是)非常清楚传统共识机制研究的实际内容,我们依旧使用了术语“拜占庭行为”,并且(至少我)认为区块链已经“解决了拜占庭将军问题”。 当我还是一个比特币粉时,我就从Andreas Antonopoulos那里了解了这一点。
我敢说,客户将能够识别拜占庭证明的审查制度,通过:1)观察拜占庭证明或可证明的拜占庭行为2)尝试在相关区块链链条中引入拜占庭证明机制。 该过程将被那些交互式客户端协议所使用,通过该协议客户端可以将正在审查中的区块链视为无效,或者至少可以获得具有比区块链中非审查中的分叉更低的分数。然而那时,我并没有意识到我所做的共时性假设(按:共时性,是瑞士心理学家荣格1920年代提出的理论,指“有意义的巧合”,用于解释因果律无法解释的现象,如梦境成真,想到某人某人便出现等。荣格认为,这些表面上无因果关系的事件之间有着非因果性、有意义的联系,这些联系常取决于人的主观经验。)。
>>>> “狂野西部”时代的终结,权益证明时代的新篇章
2014年11月,Peter Todd和Vinay Gupta分别使得我不得不看清这样一个事实,我陷入了共时性假设(Peter Todd主要针对我说的,网络消息如区块和验证签名将在一个可接受的时间内到达所有客户端 ,而Vinay重点关注了我对于所有客户端将有同步的时钟这一假设)。 他们让我意识到,我不能将共时性外包给“网络堆栈”来实现,相反的是,我必须尽我所能减少我提出的权益证明协议对这些假设的依赖。所以,这便标志了我对共时性假设的兴趣的滥觞。 乃斯(欢呼)!
我开始定义一个协议,在网络中用“乒乓机制”信息有效地创建心跳包,而不用根据消息到达情况的时钟和时间假设。 在我那时提出的PoS权益证明协议中,p%的安全存款被采样,用于每个区块上验证签名,并且这些存款加权签名的q%个单位需要包含在链中的下一个区块里,使得下一个区块有效。
我曾经试图在没有做共时性假设的情况下,跳过离线的区块制造者,然而失败了。 而且无论我怎么尝试(不考虑时间假设),绑定的权益持有者们似乎都有可能对于是否跳过某个区块制造者一事无法达成一致。
>>>> 经济与博弈理论VS计算机科学:有关金融加密邮件列表的争论
我不能清楚地记得我是如何被邀请的,但不知怎的,我在2014年11月还是12月订阅一个金融加密(和区块链)的邮件列表。
这个邮件列表由我们的朋友EminGünSirer和Byron Gibson管理,他们正努力让学者参与到区块链的研究中来。
早在我加入研究前,关于经济学与共识的相关性的研究就已经如火如荼地进行着了。我还依稀记得当时, 广义上讲,对于经济学与基于区块链的共识的相关性的观点主要分为两个派系。
Vitalik,Jae Kwon和我或多或少坚持认为经济分析是研究的核心。 我们从攻击者成本的角度上讨论了安全问题,该成本可以是烧掉的保证金,也可以是PoW里的电力和资本支出。
Nick Szabo(反对派系的领导人)认为经济分析没有比“推测大脑状态”好到哪里去,并且他坚持认为容错和共识协议研究(以或不以区块链为基础 )是一个纯粹的计算机科学问题。他认为,在生活中有“大博弈”和“小博弈”,而协议激励(小博弈)不会最终影响更大的博弈,因为大博弈牵涉到更大的激励和收益。
Vitalik和我对这个评价有同样的反应; 即使“大博弈”的激励真的会超越“小博弈”,但重要的是协议奖励机制会尽可能促进保证激励的协议被认可。
Dominic Williams则站在敏感的”中间地带“,他认为计算机科学研究是很重要的,在此基础上再逐步将兼容的激励机制增加进来。在Szabo分享了他的观点之后,Dominic也成为了“小博弈/大博弈”论断的粉丝,他多年来一直给我重复提到很多次。 Dominic的观点比我的观点更受欢迎:经济学是区块链研究的基础,但另一方面,传统的共识研究则不是。
当我“略微地惹恼”Nick Szabo的时候,便被踢出了该邮件列表。因为我提出不管一个人习得了多少有关计算机科学的知识,如果他不做经济分析研究的话,这样的人是不具讨论区块链资格的。
而我从这个列表被除名的原因,则是我对传统的共识协议文献的忽略和不了解。其实,我是完完全全的不了解。 只是直觉强烈地告诉我,它不会是那么重要的,因为它不是从头开始就以经济学来设计的。
这是我第一次非常了解传统的共识性研究。 它在我心中种下了我对以后我将最终遇到的(经济和非经济)共识协议感兴趣的种子。 无论如何我都没有动力去立刻拜读那些有关文献,毕竟因为它们很晦涩。 但我有意的忽略它们,不去阅读它们,使我感到有点内疚。
我想借此机会感谢GünSirer在这个邮件列表上积极与周到的参与。 我从来没有听说过有这么高的精度和正确性的分布式系统和博弈理论。 我认为它帮助了我!
>>>> 我对Tendermint的简介
我在那份邮件列表上讨论经济和共识问题的经历就是我如何初次认识Jae Kwon和Tendermint。Tendermint是一种基于安全存款的权益证明系统,而这个系统又是基于传统的共识协议。
在阅读Tendermint白皮书并与Jae本人进行Skype通话后,我可以声称,Tendermint是“最简单安全的权益证明协议”。 在这里,我理解的“安全”是“安全阻止试图分叉区块链的贿赂行为攻击者”。
Tendermint曾有(并且现在还有)这种属性:每个区块在被添加(”委托“)到区块链之前已经被完成。 这保证了,无论分叉多么短,一旦发生分叉或别的情况,至少有1/3的安全存款保证金将被削减。 它在反分叉安全性上比我能找到的其他方式要强得多。 这也意味着我们的很多安全存款周转问题可以很容易处理。 特别是与我当时工作的权益证明协议相比,它就显得更加的曼妙和简单。
Tendermint也是我研究的第一个相容性偏好共识协议。 事实上,学习Tendermint让我对传统共识协议也有了一定的了解。因此,这一段经历也使我对共识协议的理解更加深入。
感谢Jae Kwon的启示,我和Vitalik将绑定存款保证金的权益持有者称为“缴纳保证金验证者(Bonded validators)”或简称“验证者(validators)”。
在第4章中,我将讨论我们对区块链领域中的博弈理论和经济学的一个非常重要的观点转变。 这种观点的转变代表了Casper设计理念的最重要的部分。
为方便大家更深入了解,特放上Casper机制的历史起源第一篇及第二篇的原文链接:
原文:https://medium.com/@Vlad_Zamfir/the-history-of-casper-chapter-3-70fefb1182fc
作者:Vlad Zamfir
翻译&校对:Lola & Elisa